#include <string>
#include "node.h"
#include "type.h"

namespace AST {

    // Construção de Espaços para Indentação
    std::string Node::getIndentSpaces(int size) {
        return std::string(size, ' ');
    };

    // Configuração de Tipo
    Node* Node::setType(Type* type) {
        // Configuração
        this->_type = type;
        // Encadeamento
        return this;
    };

    // Captura de Tipo
    Type* Node::getType() {
        // Inicializado?
        if (this->_type == NULL) {
            // Tipo Desconhecido
            Type* type = new AST::Type(AST::Type::UNKNOWN);
            // Configuração
            this->setType(type);
        }
        // Apresentação
        return this->_type;
    };

    // Verificação
    Node* Node::check() {
        // Execução Vazia
        return this;
    };

    // Configuração do Token
    Node* Node::setToken(int token) {
        // Configuração
        this->_token = token;
        // Encadeamento
        return this;
    }

    // Apresentação de Token
    int Node::getToken() {
        // Apresentação
        return this->_token;
    }

};

